The present invention generally relates to data storage and data access systems, and more particularly, to systems and techniques which use a cache to provide access to data for applications that perform on computer systems.
The ability of modern computer and data processing systems to share data has largely contributed to the popularity and rapid expansion of computer networking industries such as the Internet. In response to the insatiable demand to exchange data over networks or via other means, computer systems and software developers have created various conventional data sharing mechanisms to allow one or more computer systems to obtain access to data created, stored, or maintained by another computer system. Generally, computer systems that share data do so over a network using one or more standardized client/server protocols for the data exchange. Many such client/server protocols exist, examples of which include database access protocols, file sharing and file system protocols (e.g., the Network File System or NFS protocol developed by Sun Microsystems, Inc. of Mountain View, Calif., U.S.A.), and world wide web (WWW) based protocols. Using such mechanisms, two or more computer systems can share data that is stored in a format that each computer system can readily access. Other conventional data sharing systems have also been developed to allow two computer systems to have shared access to data from a commonly shared data storage device or data storage system that has a connection (either direct or over a network) to each computer system.
In some instances, certain computer systems create and manipulate data in a format that is natively different than data formats used by other computer systems. For example, conventional computer systems commonly referred to as xe2x80x9copen systemsxe2x80x9d operate under the control of an open systems operating system such Unix (or a Unix variant) or Microsoft Windows (e.g., Windows 95, Windows 98 or Windows 2000), manufactured by Microsoft Corporation of Redmond, Wash., USA (Windows is a trademark of Microsoft Corporation). Such open-systems operating systems typically store data in files that conform to an xe2x80x9copen systemsxe2x80x9d or xe2x80x9cflat filexe2x80x9d format. Generally, the open systems file format defines a format for data stored in a file as a continuous string or stream of bytes of data beginning at a certain location in storage (i.e., in memory or on disk) and continuing for a certain length or number of bytes in the storage medium (i.e., on disk or in memory). Open systems based computing systems thus don""t interpret the contents of data such as a file maintained in storage by the operating system. Instead, applications are free to establish their own mechanisms for handling how the data is managed within files.
A software application operating on an open systems computing platform can provide a data access request to the open systems operating system that includes information that allows the operating system to process the data access request. For example, a xe2x80x9creadxe2x80x9d data access request might appear as follows: xe2x80x9cread filename(offset, length)xe2x80x9d. In this example, the xe2x80x9cfilenamexe2x80x9d portion of the data access request specifies the name of a data (e.g., a file in this example) in storage and allows the operating system to find the beginning of the data. The xe2x80x9coffsetxe2x80x9d portion of the data access request specifies a specific location (e.g., byte number) into the data at which the data access operation is to begin to be performed. For this example, the offset indicates where the read operation should begin in the data. The xe2x80x9clengthxe2x80x9d portion of the data access request indicates how much data, beginning at the offset position, the operating system should access (e.g., should read in this example) on behalf of the application providing the data access request.
Other types of computer systems, such as mainframe computers, typically store data in files which are organized as record-based sets of data known as data sets. Unlike open systems computing platforms, a non-open systems computing platform such as a mainframe computer system operates applications that do not expect to have a need to directly access data based on byte offsets into the data. Instead, data records are more meaningful to such non-open systems applications. As such, each data set may have its own predefined format such as a fixed block format, a variable-block format or a VSAM format. The operating system (e.g., MVS) that operates on a mainframe computer system xe2x80x9cunderstandsxe2x80x9d the predefined format for data stored by the mainframe computer system. Mainframe computer systems are often called xe2x80x9cnon-open systemsxe2x80x9d computer systems due to the proprietary data formats used to store data in such systems. Such non-open data formats do not readily allow the non-open systems data to be shared with other computer systems that use a standard open systems data format.
Applications that operate on mainframe computer systems can provide non-open systems data access requests to the mainframe operating system that indicate, for example, a specific record and/or specific block at which the data access is to take place. Record lengths can vary from one record to another within a single data set. Accordingly, to reference a specific byte of data at a given location within a data set, the non-open systems data access request must include the record number as well as a position within that record. However, as noted above, typical non-open systems applications require access to the entire record rather than to a specific byte of information within a record.
Software developers have created conventional software systems that can allow a software application operating on an open systems computing platform, such as a computer system running the Unix operating system, to access non-open systems data such as data stored within a mainframe data set. An example of such a software system is the InfoMover software system developed by EMC Corporation of Hopkinton, Mass., USA.
InfoMover operates in conjunction with an open systems operating system such as Unix to service open-systems data access requests which attempt to access mainframe data stored in mainframe data sets. In order to properly obtain access to the data in the mainframe data set at the proper location, InfoMover receives an open systems data access request and starts performing a seek access operation at the beginning of the mainframe data set containing the requested data. During the seek access operation, the InfoMover system counts the number of bytes in each sequential record within the mainframe data set, beginning at the start of the first record in the data set, and continues counting bytes until the desired open systems offset is reached in the data within the data set. At that point, InfoMover can access the data according to the data access request in order to provide data from the mainframe data set to the requesting open systems software application. Various aspects of the InfoMover software system are discussed in the U.S. patent application Ser. No. 09/479,512, entitled xe2x80x9cMETHODS AND APPARATUS FOR ACCESSING SHARED DATAxe2x80x9d, filed Jan. 07, 2000, which was incorporated by reference above.
Conventional techniques to allow open systems software applications to access non-open systems data, such as data stored in a mainframe data set, suffer from a variety of deficiencies. For example, a typical open systems data access request specifies an offset position within the data that is to be accessed that is relative from the beginning of the data and further specifies a length of data to be accessed (i.e., read, written, etc.) at the specified offset position. The open systems offset position has little relevance to a non-open systems record or block structure in which a typical mainframe data set is organized. As such, a conventional software application such as InfoMover that allows open systems applications to access data in a mainframe data set must process each open-systems data access request from the beginning of the mainframe data set in order to keep count of the total number of bytes that are xe2x80x9cseekedxe2x80x9d to until the desired position is reached in the data set that corresponds to the offset position specified in the open-systems data access request. Then the data access operation can be performed.
The InfoMover system must repeat this type of processing for each subsequent open systems data access operation that InfoMover receives. For large data sets in which the open systems data access operation specifies large offsets, seeking from the beginning of the data set to the desired offset position can be quite cumbersome and can require significant processing time in order to simply reach the desired location in the data set, at which point InfoMover must still then process the data access request at that location in the data.
The present invention significantly overcomes this type of problem that arises in conventional data sharing mechanisms, such as those described above. In particular, embodiments of the invention provide mechanisms and techniques that allow open systems computing platforms and software applications to more efficiently access non-open systems data. In embodiments of the invention, this is done by providing a unique cache mechanism that provides mappings between open systems file or data location references and corresponding non-open systems file or data location references. The cache mechanism includes a two-part caching system that includes a history cache and a partition cache.
Cache entries in the history cache represent mappings between open systems data locations (e.g., offsets) and corresponding relative non-open systems locations (e.g., record and/or block positions) in the non-open systems data (e.g., in a mainframe data set). Embodiments of the invention produce such cache entries as a result of processing open systems data access requests for access to the non-open systems data. The partition cache contains a predetermined number of successively indexed partition cache entries, each of which corresponds to a specific location range of data. An open systems to non-open systems location mapping contained in any particular partition cache entry thus contains a mapping between an open systems reference to data and a corresponding non-open systems reference to the data which xe2x80x9cfall withinxe2x80x9d or xe2x80x9cexist withinxe2x80x9d the location range assigned to a partition cache entry index assigned to that particular partition cache entry. For example, if an embodiment of the invention initially assumes that data to be accessed is two gigabytes in total size (i.e., from beginning to end) and the partition cache contains a predetermined number of partition cache entries, such as one thousand partition cache entries, then each partition cache entry represents a two megabyte slice or partition of the total data file or data set that can be accessed. A mapping between an open systems data location and a non-open systems data location that exists within a particular partition cache entry thus references data that exists within the location range associated to the index for that partition cache entry.
Using this architecture, according to the general operation of an embodiment of the invention, an open systems software application can provide an open systems data access request to a computer system equipped with the embodiment of the invention. The embodiment of the invention can use an offset or other open systems data reference (i.e., a first data reference) contained within the open systems data access request to select or otherwise obtain a history cache entry from within the history cache that most closely corresponds to a position within the data as specified by the open systems reference or offset (i.e., the first data reference) contained in the data access request. Preferably, a history cache entry that meets this criteria contains an open systems reference that is equal to or less than (i.e., exists at a location prior to) the offset position specified in the open systems data access request. In addition to selecting a xe2x80x9cclosestxe2x80x9d history cache entry, the embodiment of the invention can also select or obtain a partition cache entry that has a partition cache entry index that corresponds to the location range in the data to which the offset (the first data reference) specified in the data access request corresponds. If this partition cache entry happens to not contain a mapping (i.e., is empty), then the embodiment of the invention can select the first non-empty partition cache entry that most closely precedes that empty partition cache entry in the partition cache.
With these two cache entries (i.e., the selected history cache entry and the selected partition cache entry), the embodiment of the invention can select or chose either the history cache entry or the partition cache entry that most closely corresponds to (e.g., is equal to or less than) the desired offset (the first data reference) at which the data access request is to be performed. The embodiment of the invention can then cause the computer system or other device to perform the data access request using the non-open systems location from the particular selected cache entry as a starting point in the data in order to seek to the desired offset or starting location as specified by the first data reference in the data access operation. This new starting location (i.e., the location which the embodiment xe2x80x9cseekedxe2x80x9d to using the selected history or partition cache entry as a non-open systems starting point) and a corresponding non-open systems reference which corresponds to this starting location (i.e., the position in the data set which was xe2x80x9cseekedxe2x80x9d to) can serve as a new mapping for a new cache entry to be placed into the history cache and the partition cache.
In addition, after completion of the data access operation as specified in the data access request (e.g., after reading data for a specified number of bytes), the embodiment of the invention can obtain an new ending location in the data that indicates the open and non-open systems positions at which the data access request was completed. This open systems ending location (i.e., the offset location at which the data access operation completed accessing the data) and its corresponding non-open systems reference (e.g., a record or block location) to the data which corresponds to this ending location can serve as a new ending location mapping for another new cache entry which can also be placed into the history cache, and possibly also into the partition cache.
In this manner, as the embodiment of the invention causes each data access operation to be performed, two new history cache entries can be created; a starting location history cache and an ending history cache entry. The first is created as a result of using an existing cache entry as a starting point and then seeking to a new starting location, which serves as the open systems reference for a new starting location history cache entry, and the second is created as a result of obtaining the ending locations at which the data access operation completed processing.
More specifically, the system of the invention provides method embodiments which generally provide access to data. The data may be stored in a non-open systems format such as in a mainframe data set or data file or in any other format. One method embodiment comprises the steps of receiving a data access request containing a first data reference. The data access request is preferably an open systems request to access the data stored in the non-open systems format and the first data reference can be, for example, an open systems offset specification to a location or position in the data. Alternatively, the data access request can be in any format that is not natively compatible with the format of in which the data is stored. That is, the invention can apply to systems in which data access requests are received in one format (e.g., using one addressing or data location scheme) for data which happens to be stored in another format, such as in another addressing scheme. A preferred example of this is data access requests received in an open systems format (e.g., conforming to Unix, Windows, or another open systems standard) that request access to data stored in a non-open systems format (conforming or arranged in a mainframe format, such as in a data set block or record format).
In operation, the method embodiment obtains a history cache entry from a history cache based on the first data reference and also obtains a partition cache entry from a partition cache based on the first data reference. The history cache entry and the partition cache entry can each contain a mapping between an open systems reference to a location in the data and a non-open systems reference to a location in the data. The method then performs (or causes to be performed) a data access operation on the data as specified in the data access request using a second data reference obtained from one of the history cache entry and the partition cache entry. The second data reference identifies a non-open system location in the data that corresponds closest to the first data reference. In this manner, two cache entries are obtained and compared to determine which is the most optimal (e.g., closest) for use in performing the data access operation.
In another embodiment, the data access request is a read request received from an open systems computer system to read the data which is non-open systems data (e.g., mainframe created data) at an open systems location specified by the first data reference. In this embodiment, the history cache and partition cache contain respective history cache entries and partition cache entries that contain mappings of open systems data locations in the data to non-open systems data locations in the data. These mapping thus map the first data reference to the second data reference. The step of performing uses a non-open systems data location in the data (i.e., the second data reference), as obtained from either the history cache entry or the partition cache entry, as a starting point in the data that is substantially close to a starting location in the data at which the data access operation is to be performed in order to then advance to the starting location in the data at which the data access operation is to be performed. The cache entries are thus xe2x80x9cclosexe2x80x9d cache hits which provide a location in the data that is close to the desired offset (i.e., starting location) at which the data access operation is to actually begin.
In another embodiment, the history cache can include a plurality of history cache entries. Each history cache entry contains a mapping between an open systems reference to a location in the data and a non-open systems reference to a location in the data. Each history cache entry is obtained from a former data access operation to the data. In this embodiment, the step of obtaining a history cache entry includes the step of comparing the first data reference to each history cache entry in the history cache to select a selected history cache entry that is closest to the first data reference. In a preferred embodiment, that are a limited number of history cache entries, such as one hundred history cache entries. As such, this embodiment compares the first data reference to the open systems reference in each of the one hundred history cache entries to find the one closest to the first data reference.
In another embodiment, the step of obtaining selects the selected history cache entry from the plurality of history cache entries that contains an open systems reference that is closest to the first data reference and that is at least equal to or less than the first data reference. In other words, the history cache entry with the open systems reference that is closest without going over or exceeding the value of the first data reference is selected or obtained.
In yet another embodiment, the partition cache can include a plurality of partition cache entries. Each partition cache entry is capable of containing a mapping between an open systems reference to a location in the data and a non-open systems reference to a location in the data. Each partition cache entry also has a respective partition cache entry index corresponding to a respective location range within the data that is to be accessed. Thus, if a partition cache entry contains a mapping between an open systems reference to a location in the data and a non-open systems reference to a location in the data, the open systems reference in that partition cache entry corresponds to a location in the data that exists within (i.e., is within the bounds of) the location range corresponding to that partition cache entry index. Also in this embodiment, the step of obtaining a partition cache entry includes the step of selecting a selected partition cache entry that contains a mapping and that has a partition cache entry index that most closely corresponds to a location range within the data in which an open systems reference to a location in the data identified in the first data reference exists. Preferably the partition cache entry having the location range in which the first data reference exists is chosen. However, if this partition cache entry is empty (i.e., no mapping has yet been placed into this partition cache entry), then the first non-empty partition cache entry having the next closest, but lower, partition cache entry index is chosen as the selected partition cache entry.
In a further embodiment, the step of obtaining selects the selected partition cache entry from the plurality of partition cache entries that contains an open systems reference that is closest to the first data reference and that is either equal to or less than the first data reference.
In another embodiment of the invention, the step of performing a data access operation includes the steps of comparing the first data reference to an open systems reference in the history cache entry and comparing the first data reference to an open systems reference in the partition cache entry to select a selected cache entry from between the history cache entry and the partition cache entry that contains an open systems reference that is the closest to the first data reference. In other words, whichever one of the history or partition cache entries contains the closest location reference is used as the selected cache entry. Then this embodiment obtains, for use as the second data reference for performance of the data access operation, a non-open systems reference from the selected cache entry that contains the open systems reference that is the closest to the first data reference.
In another embodiment, the first data reference corresponds to an open systems starting location in the data at which the data access operation is to be performed and the open systems reference in each of the history cache entry and the partition cache entry correspond to open systems locations in the data obtained from formerly performed data access operations. Also, the step of comparing selects the selected cache entry from between the history cache entry and the partition cache entry that contains an open systems reference that is closest to the first data reference and that either equal to or less than the first data reference.
In still another embodiment, the open systems reference of the selected cache entry corresponds to a location in the data that is either the same as or is before the open systems starting location in the data corresponding to the first data reference at which the data access operation is to be performed.
In a further embodiment, the step of performing a data access operation includes the steps of computing a starting location for data access based upon: i) the first data reference from the data access request, ii) the open systems reference from the selected cache entry, and/or iii) the non-open systems reference from the selected cache entry. This method embodiment then provides access to the starting location in the data and performs the data access operation at the starting location in the data.
In one embodiment, the step of computing a starting location for data access comprises the step of computing the starting location for data access to be a location in the data corresponding to the non-open systems reference from the selected cache entry plus a difference between the first data reference and the location specified by the open systems reference from the selected cache entry. In other words, the selected cache entry provides a non-open systems reference which is a position xe2x80x9cclosexe2x80x9d to the starting location. Then, using the difference between the first data reference (which specifies the true offset into the data, in open systems format, which the data access operation should begin) and the open systems reference in the selected cache entry, this embodiment can determine how far off or away the non-open systems reference (from the selected cache entry) is from the actual starting location. This difference is then added (i.e., by seeking ahead in the data, as will be explained) to the non-open systems reference from the selected cache entry to advance to the actual starting location in the non-open systems data.
Along these lines, in another embodiment, the step of providing access to the starting location in the data comprises the steps of beginning seek access to the data at a location specified by the non-open systems reference and continuing seek access to the data until the starting location for data access is reached. The amount by which to seek ahead towards, or advanced to, in the data beginning at the non-open systems reference can be determined by difference between the first data reference and the open systems reference in the selected cache entry. Generally then, the cache utilization techniques of this invention significantly improve data access times for accessing non-open systems data when receiving data access requests specifying an open systems format.
In another embodiment, in response to performing the data access operation, this method embodiment updates at least one history cache entry in the history cache with at least one new history cache entry. As will be explained, performance of a data access operation specified by a data access requests results in the ability of embodiments of the invention to obtain two (or more) new mappings between open system and non-open system data locations. Using these new mappings, new cache entries can be created in both the history and partition caches.
In one embodiment, the step of updating the history cache includes obtaining a non-open systems reference to the data which the step of performing uses to perform the data access operation on the data and obtaining an open systems reference to the data which the step of performing uses to perform the data access operation on the data. Then, this embodiment creates a new history cache entry. The new history cache entry contains a mapping between the one open systems reference to the data and the non-open systems reference to the data. There may be one or more than one new cache entry created in this manner.
In another embodiment, the method includes the step of creating a new partition cache entry using the history cache entry. In other words, the new history cache entry can also be placed into the partition cache.
In yet another embodiment, the steps of obtaining a non-open systems reference to data, obtaining an open systems reference to the data, and creating a new history cache entry are performed for starting locations in the data. The starting locations (an open systems location and a corresponding non-open systems location) are the positions in the data at which the data access operation is actually begun. In this embodiment then, the new history cache entry is a starting location history cache entry that contains a mapping between an open systems reference and a corresponding non-open systems reference that reflect a starting location for the data access operation in the data.
In a further embodiment, the steps of obtaining a non-open systems reference to data, obtaining an one open systems reference to the data, and creating a new history cache entry are repeated for ending locations in the data to create a second new history cache entry. The second new history cache entry is an ending location history cache entry that contains a mapping between an open systems reference and a corresponding non-open systems reference that reflect an ending location for the data access operation in the data. In other words, when the data access operation has completed, a open systems and non-open systems ending location are obtained which are used as another history cache entry.
In one embodiment, the method updates a partition cache entry in the partition cache using the starting location history cache entry. In another embodiment, the method updates a partition cache entry in the partition cache using the ending location history cache entry.
In a further embodiment, the history cache can contain a plurality of history cache entries, and each history cache entry can contain a mapping between an open systems reference to a location in the data and a non-open systems reference to a location in the data. Also in this embodiment, the steps of providing access to data are repeated such that the history cache is filled with history cache entries created in response to the performance of successive data access operations. When the history cache is filled with history cache entries, new history cache entries that are created as a result of further performance of successive data access operations replace existing history cache entries. In this manner, the history cache holds recently used mappings between open systems and non-open systems locations in the data.
In one embodiment, the step of updating at least one history cache entry in the history cache with at least one new history cache entry includes the step of replacing at least one existing history cache entry with a respective at least one new history cache entry.
In another embodiment, the step of replacing includes the step of selecting at least one existing history cache entry for replacement according to a history cache replacement scheme. A history cache replacement scheme is essentially an algorithm used to select which history cache entries are to be replaced when new history cache entries are created. Such a scheme can include a random replacement scheme, a least recently used replacement scheme, and a first in first out replacement scheme.
In another embodiment, the step of updating the partition cache includes obtaining a non-open systems reference to the data which the step of performing uses to perform the data access operation on the data. This may be, for example, the starting or ending non-open systems location in the data. The method then obtains an open systems reference to the data which the step of performing uses to perform the data access operation on the data. This may be, for example, the starting or ending open systems location in the data. The method then creates a new partition cache entry containing a mapping between the one open systems reference to the data and the non-open systems reference to the data. This new entry may be the same as (i.e., may be one of) the new starting or ending or other history cache entries, or may be a different entry containing different locations other than the starting or ending locations and other than location defined in the new history cache entries. For that matter, any open and non-open systems locations discovered during processing of the data access operation can be used to create history and/or partition cache entries.
In another embodiment, the step of creating a new partition cache entry includes the step of creating the new partition cache entry in a partition cache entry having a partition cache entry index that corresponds to a location range within the data in which an open systems reference to a location in the data as identified in the new partition cache entry exists. That is, the new entry is placed into a partition cache at a position having a partition cache index with an associated location range in which the open systems reference for that entries falls within (i.e., is within the bounds of).
In another embodiment, each successive partition cache entry represents a next successive location range for which that partition cache entry can contain a mapping of an open systems reference within that location range to a non-open systems reference in the data. In this embodiment, if a partition cache entry contains a mapping between an open systems reference to a location in the data and a non-open systems reference to a location in the data, the open systems reference in that partition cache entry corresponds to a location in the data that exists within the location range corresponding to that partition cache entry index.
In another embodiment of the invention, the data is assumed to be a predetermined size and the plurality of partition cache entries comprise a predetermined number of successively ordered partition cache entries, each having a partition cache entry index having a value corresponding to a respective location in the predetermined number of successively ordered partition cache entries. In such an embodiment, the location range associated with each partition cache entry is set to a value corresponding to the value of the partition cache entry index multiplied by a location range increment. The location range increment is equal to the predetermined size of the data divided by the predetermined number of partition cache entries.
In other words, the partition cache can be an array, for example, having a predetermined number of entries, such as 1000 entries, each capable of containing an individual mapping of an open systems location to a non-open systems location in the data. Embodiments of the invention can make an initial assumption of the size of the data. For example, the data may be assumed to be two gigabytes in size. The location range associated with each entry in this example is then the two gigabyte data size divided by the number of partition cache entries (1000), resulting in a two megabyte location range for each partition cache entry.
Another embodiment includes the steps of manipulating the partition cache to accommodate creation of a partition cache entry based on the data access request if the data access request includes a first data reference that references an open systems location in the data that is beyond the location range corresponding to the last partition cache entry index. In other words, if the initial size estimate of the partition cache entry is not accurate (e.g., is too big or small), then the partition cache can be altered to contain a proper location for a new entry.
In one embodiment, the partition cache is a former partition cache and the step of manipulating the partition cache includes the step of condensing the partition cache by: i) copying the former partition cache to a new partition cache containing new partition cache entries, ii) re-assigning a new location range to each partition cache entry index in the new partition cache, the new location range for each partition cache entry index being substantially twice a size of the location range assigned a corresponding partition cache entry having the same partition cache entry index value in the former partition cache; and iii) for each new partition cache entry in the new partition cache, selecting a mapping, if existent, from a single former partition cache entry for use as a mapping for the new partition cache entry, the mapping selected from a set of all former partition cache entries in the former partition cache that contain mappings having open systems references for locations that exist within the new location range for the new partition cache entry.
In another embodiment, the step of selecting a mapping, if existent, from a single former partition cache entry for use as a mapping for the new partition cache entry, selects a mapping having a highest location value for the open systems reference from the set of all former partition cache entries in the former partition cache that contain mappings having open systems references for locations that exist within the new location range for the new partition cache entry. In other words, if the new partition cache entry contains entries having location ranges that are, for example, twice the size of the former location ranges, then there can be two entries from the former partition cache that could each (i.e., either one) placed into a single new partition cache entry having the large location range. In one embodiment, the system selects the former entry having the highest valued open systems reference. In another embodiment, the system selects the former entry having the lowest valued open systems reference.
In yet another embodiment, the step of manipulating the partition cache to accommodate creation of a partition cache entry comprises the steps of adding successive additional partition cache entries onto the end of the partition cache and assigning a corresponding location range to each added partition cache entry until enough successive additional partition cache entries are added that contain corresponding location ranges in which the reference to an open systems location can exist. In other words, in an alternative embodiment of the invention, instead of reassigning location ranges to the same number of partition cache entries, new partition cache entries are added to the end of the existing partition cache, and each is assigned a successively higher location range until a partition cache entry is added that has a range covering the open systems location for the new entry to be added to the partition cache.
Other embodiments of the invention include a computerized device, such as a server computer system, workstation, data storage system, network device, or other type of computer system or device configured to process all of the aforementioned method operations disclosed herein as embodiments of the invention. In such embodiments, the computer system includes an interface, a memory system, a processor and an interconnection mechanism connecting the interface, the processor and the memory system. In such embodiments, the memory system is encoded with a cache manager application that when performed on the processor, produces a cache manager process that provides access to data by causing the computer system, under control of the cache manager process, to perform all of the method embodiments and operations explained herein as embodiment of the invention.
Other arrangements of embodiments of the invention that are disclosed herein include software programs to perform the method embodiment steps and operations summarized above and disclosed in detail below. More particularly, a computer program product is disclosed which has a computer-readable medium including computer program logic encoded thereon to provide a technique for accessing data as explained herein. The computer program logic, when executed on at least one processor with a computing system, causes the processor to perform the processing operations (e.g., the methods) indicated herein as embodiments of the invention. Such arrangements of the invention are typically provided as software, code and/or other data arranged or encoded on a computer readable medium such as an optical medium (e.g., CD-ROM), floppy or hard disk or other a medium such as firmware or microcode in one or more ROM or RAM or PROM chips or as an Application Specific Integrated Circuit (ASIC). The software or firmware or other such configurations can be installed onto a computer system to cause the computer system to perform the techniques explained herein as embodiments of the invention.
It is to be understood that the system of the invention can be embodied strictly as a software program, as software and hardware, or as hardware alone. Example embodiments of the invention may be implemented within the EMC InfoMover software application that provides access to non-open system data on behalf of open systems which request such access. InfoMover is manufactured by EMC Corporation of Hopkinton, Mass., USA.
Also, it is to be understood that other types of devices, such as data storage systems, can operate according to, and can be configured with embodiments of the invention. That is, it is not required that the techniques explained herein operate within a computer system such as a server running an open systems operating system. Instead, in such other embodiments, a data storage system such as one of the Symmetrix line of data systems produced by EMC Corporation can contain operational software code, logic and/or circuitry to carry out the processing of embodiments of the invention as explained herein. In such embodiments, the data access request in an open systems format may be directly received by the data storage system from a device such as a computer system coupled to the data storage system. The data storage system can thus operate a cache manager as explained herein and can maintain the history and partition caches locally, within a memory system (e.g., a cache memory system) within the data storage system. The data storage system can also store the data (e.g., in non-open systems format) locally with storage devices such as disk drives that are also contained within and that operate in the data storage system.